package ndnKeyChain
/*
#cgo CXXFLAGS: -std=c++14
#cgo LDFLAGS: -ljsoncpp -lndn-cxx -lboost_system
#include "keyTool.h"
*/
import "C"		//import "C" 在注释之间不要有空行

import (
	"fmt"
	"errors"
	"unsafe"
)

/*
brief 验证json字符串的签名的合法性
param :
	jsonstr		json 字符串, cert证书字符串
ret :
	int : 0签名无效、1签名有效、-1 验证过程失败
	err : 验证过程失败原因
*/
func VerifySignWithCert(jsonstr, cert string)( int, error ){
	var ret int = 0
	ret = int(C.verifySignWithCert(C.CString(jsonstr), C.CString(cert)))
	if ret < 0 {
		err := errors.New("cert format error")
		return ret, err
	}
	return ret, nil
}

/*
brief : 使用本机的默认私钥对证书进行签名
param :
	signRequest  签名之前的证书
ret :
	string : 签名之后的证书
	err : 签名成功，则该值为"" 。否则为签名失败的原因
*/
func SignCert(signRequest string) (string, error){
	cstr := C.CString(signRequest)
	result := C.signCert(cstr)
	cert := C.GoString(result)
	certLen := len(cert)
	C.free(unsafe.Pointer(cstr))
	C.free(unsafe.Pointer(result))
	if certLen <= 10 {
		err := errors.New("cert format error")
		return cert, err
	}
	return cert, nil
}

func Output(){
	fmt.Println("hello")
}
